home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / mozilla-firefox / include / js / jsconfig.h < prev    next >
C/C++ Source or Header  |  2006-05-08  |  38KB  |  564 lines

  1. /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  2.  *
  3.  * ***** BEGIN LICENSE BLOCK *****
  4.  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  5.  *
  6.  * The contents of this file are subject to the Mozilla Public License Version
  7.  * 1.1 (the "License"); you may not use this file except in compliance with
  8.  * the License. You may obtain a copy of the License at
  9.  * http://www.mozilla.org/MPL/
  10.  *
  11.  * Software distributed under the License is distributed on an "AS IS" basis,
  12.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  13.  * for the specific language governing rights and limitations under the
  14.  * License.
  15.  *
  16.  * The Original Code is Mozilla Communicator client code, released
  17.  * March 31, 1998.
  18.  *
  19.  * The Initial Developer of the Original Code is
  20.  * Netscape Communications Corporation.
  21.  * Portions created by the Initial Developer are Copyright (C) 1998
  22.  * the Initial Developer. All Rights Reserved.
  23.  *
  24.  * Contributor(s):
  25.  *
  26.  * Alternatively, the contents of this file may be used under the terms of
  27.  * either of the GNU General Public License Version 2 or later (the "GPL"),
  28.  * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  29.  * in which case the provisions of the GPL or the LGPL are applicable instead
  30.  * of those above. If you wish to allow use of your version of this file only
  31.  * under the terms of either the GPL or the LGPL, and not to allow others to
  32.  * use your version of this file under the terms of the MPL, indicate your
  33.  * decision by deleting the provisions above and replace them with the notice
  34.  * and other provisions required by the GPL or the LGPL. If you do not delete
  35.  * the provisions above, a recipient may use your version of this file under
  36.  * the terms of any one of the MPL, the GPL or the LGPL.
  37.  *
  38.  * ***** END LICENSE BLOCK ***** */
  39.  
  40. /*
  41.  * JS configuration macros.
  42.  */
  43. #ifndef JS_VERSION
  44. #define JS_VERSION 160
  45. #endif
  46.  
  47. /*
  48.  * Compile-time JS version configuration.  The JS version numbers lie on the
  49.  * number line like so:
  50.  *
  51.  *      1.0     1.1     1.2     1.3     1.4     ECMAv3  1.5     1.6
  52.  *              ^                       ^
  53.  *              |                       |
  54.  *              basis for ECMAv1        close to ECMAv2
  55.  *
  56.  * where ECMAv3 stands for ECMA-262 Edition 3.  See the runtime version enum
  57.  * JSVersion in jspubtd.h.  Code in the engine can therefore count on version
  58.  * <= JSVERSION_1_4 to mean "before the Third Edition of ECMA-262" and version
  59.  * > JSVERSION_1_4 to mean "at or after the Third Edition".
  60.  *
  61.  * In the unlikely event that SpiderMonkey ever implements JavaScript 2.0, or
  62.  * ECMA-262 Edition 4 (JS2 without certain extensions), the version number to
  63.  * use would be near 200, or greater.
  64.  *
  65.  * The JS_VERSION_ECMA_3 version is the minimal configuration conforming to
  66.  * the ECMA-262 Edition 3 specification.  Use it for minimal embeddings, where
  67.  * you're sure you don't need any of the extensions disabled in this version.
  68.  * In order to facilitate testing, JS_HAS_OBJ_PROTO_PROP is defined as part of
  69.  * the JS_VERSION_ECMA_3_TEST version.
  70.  */
  71. #define JS_VERSION_ECMA_3       148
  72. #define JS_VERSION_ECMA_3_TEST  149
  73.  
  74. #if JS_VERSION == JS_VERSION_ECMA_3 ||                                        \
  75.     JS_VERSION == JS_VERSION_ECMA_3_TEST
  76.  
  77. #define JS_BUG_NULL_INDEX_PROPS 0       /* o[0] defaults to null, not void */
  78. #define JS_BUG_EMPTY_INDEX_ZERO 0       /* o[""] is equivalent to o[0] */
  79. #define JS_BUG_EAGER_TOSTRING   0       /* o.toString() trumps o.valueOf() */
  80. #define JS_BUG_VOID_TOSTRING    0       /* void 0 + 0 == "undefined0" */
  81. #define JS_BUG_EVAL_THIS_FUN    0       /* eval('this') in function f is f */
  82. #define JS_BUG_EVAL_THIS_SCOPE  0       /* Math.eval('sin(x)') vs. local x */
  83. #define JS_BUG_FALLIBLE_EQOPS   0       /* fallible/intransitive equality ops */
  84. #define JS_BUG_FALLIBLE_TONUM   0       /* fallible ValueToNumber primitive */
  85. #define JS_BUG_WITH_CLOSURE     0       /* with(o)function f(){} sets o.f */
  86.  
  87. #define JS_HAS_PROP_DELETE      1       /* delete o.p removes p from o */
  88. #define JS_HAS_CALL_OBJECT      1       /* fun.caller is stack frame obj */
  89. #define JS_HAS_LABEL_STATEMENT  1       /* has break/continue to label: */
  90. #define JS_HAS_DO_WHILE_LOOP    1       /* has do {...} while (b) */
  91. #define JS_HAS_SWITCH_STATEMENT 1       /* has switch (v) {case c: ...} */
  92. #define JS_HAS_SOME_PERL_FUN    1       /* has array.join/reverse/sort */
  93. #define JS_HAS_MORE_PERL_FUN    1       /* has array.push, array.pop, etc */
  94. #define JS_HAS_STR_HTML_HELPERS 0       /* has str.anchor, str.bold, etc. */
  95. #define JS_HAS_PERL_SUBSTR      0       /* has str.substr */
  96. #define JS_HAS_VALUEOF_HINT     1       /* valueOf(hint) where hint is typeof */
  97. #define JS_HAS_LEXICAL_CLOSURE  1       /* nested functions, lexically closed */
  98. #define JS_HAS_APPLY_FUNCTION   1       /* has fun.apply(obj, argArray) */
  99. #define JS_HAS_CALL_FUNCTION    1       /* has fun.call(obj, arg1, ... argN) */
  100. #if JS_VERSION == JS_VERSION_ECMA_3_TEST
  101. #define JS_HAS_OBJ_PROTO_PROP   1       /* has o.__proto__ etc. */
  102. #else
  103. #define JS_HAS_OBJ_PROTO_PROP   0       /* has o.__proto__ etc. */
  104. #endif
  105. #define JS_HAS_REGEXPS          1       /* has perl r.e.s via RegExp, /pat/ */
  106. #define JS_HAS_SEQUENCE_OPS     1       /* has array.slice, string.concat */
  107. #define JS_HAS_INITIALIZERS     1       /* has var o = {'foo': 42, 'bar':3} */
  108. #define JS_HAS_OBJ_WATCHPOINT   0       /* has o.watch and o.unwatch */
  109. #define JS_HAS_EXPORT_IMPORT    0       /* has export fun; import obj.fun */
  110. #define JS_HAS_EVAL_THIS_SCOPE  0       /* Math.eval is same as with (Math) */
  111. #define JS_HAS_TRIPLE_EQOPS     1       /* has === and !== identity eqops */
  112. #define JS_HAS_SHARP_VARS       0       /* has #n=, #n# for object literals */
  113. #define JS_HAS_REPLACE_LAMBDA   1       /* has string.replace(re, lambda) */
  114. #define JS_HAS_SCRIPT_OBJECT    0       /* has (new Script("x++")).exec() */
  115. #define JS_HAS_XDR              0       /* has XDR API and internal support */
  116. #define JS_HAS_XDR_FREEZE_THAW  0       /* has XDR freeze/thaw script methods */
  117. #define JS_HAS_EXCEPTIONS       1       /* has exception handling */
  118. #define JS_HAS_UNDEFINED        1       /* has global "undefined" property */
  119. #define JS_HAS_TOSOURCE         0       /* has Object/Array toSource method */
  120. #define JS_HAS_IN_OPERATOR      1       /* has in operator ('p' in {p:1}) */
  121. #define JS_HAS_INSTANCEOF       1       /* has {p:1} instanceof Object */
  122. #define JS_HAS_ARGS_OBJECT      1       /* has minimal ECMA arguments object */
  123. #define JS_HAS_DEBUGGER_KEYWORD 0       /* has hook for debugger keyword */
  124. #define JS_HAS_ERROR_EXCEPTIONS 1       /* has error object hierarchy */
  125. #define JS_HAS_CATCH_GUARD      0       /* has exception handling catch guard */
  126. #define JS_HAS_NEW_OBJ_METHODS  1       /* has Object.prototype query methods */
  127. #define JS_HAS_SPARSE_ARRAYS    0       /* array methods preserve empty elems */
  128. #define JS_HAS_DFLT_MSG_STRINGS 1       /* provides English error messages */
  129. #define JS_HAS_NUMBER_FORMATS   1       /* numbers have formatting methods */
  130. #define JS_HAS_GETTER_SETTER    0       /* has JS2 getter/setter functions */
  131. #define JS_HAS_UNEVAL           0       /* has uneval() top-level function */
  132. #define JS_HAS_CONST            0       /* has JS2 const as alternative var */
  133. #define JS_HAS_FUN_EXPR_STMT    0       /* has function expression statement */
  134. #define JS_HAS_LVALUE_RETURN    1       /* has o.item(i) = j; for native item */
  135. #define JS_HAS_NO_SUCH_METHOD   0       /* has o.__noSuchMethod__ handler */
  136. #define JS_HAS_XML_SUPPORT      0       /* has ECMAScript for XML support */
  137. #define JS_HAS_ARRAY_EXTRAS     0       /* has indexOf and Lispy extras */
  138.  
  139. #elif JS_VERSION == 100
  140.  
  141. #define JS_BUG_NULL_INDEX_PROPS 1       /* o[0] defaults to null, not void */
  142. #define JS_BUG_EMPTY_INDEX_ZERO 1       /* o[""] is equivalent to o[0] */
  143. #define JS_BUG_EAGER_TOSTRING   1       /* o.toString() trumps o.valueOf() */
  144. #define JS_BUG_VOID_TOSTRING    0       /* void 0 + 0 == "undefined0" */
  145. #define JS_BUG_EVAL_THIS_FUN    0       /* eval('this') in function f is f */
  146. #define JS_BUG_EVAL_THIS_SCOPE  0       /* Math.eval('sin(x)') vs. local x */
  147. #define JS_BUG_FALLIBLE_EQOPS   1       /* fallible/intransitive equality ops */
  148. #define JS_BUG_FALLIBLE_TONUM   1       /* fallible ValueToNumber primitive */
  149. #define JS_BUG_WITH_CLOSURE     0       /* with(o)function f(){} sets o.f */
  150.  
  151. #define JS_HAS_PROP_DELETE      0       /* delete o.p removes p from o */
  152. #define JS_HAS_CALL_OBJECT      0       /* fun.caller is stack frame obj */
  153. #define JS_HAS_LABEL_STATEMENT  0       /* has break/continue to label: */
  154. #define JS_HAS_DO_WHILE_LOOP    0       /* has do {...} while (b) */
  155. #define JS_HAS_SWITCH_STATEMENT 0       /* has switch (v) {case c: ...} */
  156. #define JS_HAS_SOME_PERL_FUN    0       /* has array.join/reverse/sort */
  157. #define JS_HAS_MORE_PERL_FUN    0       /* has array.push, str.substr, etc */
  158. #define JS_HAS_STR_HTML_HELPERS 1       /* has str.anchor, str.bold, etc. */
  159. #define JS_HAS_PERL_SUBSTR      0       /* has str.substr */
  160. #define JS_HAS_VALUEOF_HINT     0       /* valueOf(hint) where hint is typeof */
  161. #define JS_HAS_LEXICAL_CLOSURE  0       /* nested functions, lexically closed */
  162. #define JS_HAS_APPLY_FUNCTION   0       /* has fun.apply(obj, argArray) */
  163. #define JS_HAS_CALL_FUNCTION    0       /* has fun.call(obj, arg1, ... argN) */
  164. #define JS_HAS_OBJ_PROTO_PROP   0       /* has o.__proto__ etc. */
  165. #define JS_HAS_REGEXPS          0       /* has perl r.e.s via RegExp, /pat/ */
  166. #define JS_HAS_SEQUENCE_OPS     0       /* has array.slice, string.concat */
  167. #define JS_HAS_INITIALIZERS     0       /* has var o = {'foo': 42, 'bar':3} */
  168. #define JS_HAS_OBJ_WATCHPOINT   0       /* has o.watch and o.unwatch */
  169. #define JS_HAS_EXPORT_IMPORT    0       /* has export fun; import obj.fun */
  170. #define JS_HAS_EVAL_THIS_SCOPE  0       /* Math.eval is same as with (Math) */
  171. #define JS_HAS_TRIPLE_EQOPS     0       /* has === and !== identity eqops */
  172. #define JS_HAS_SHARP_VARS       0       /* has #n=, #n# for object literals */
  173. #define JS_HAS_REPLACE_LAMBDA   0       /* has string.replace(re, lambda) */
  174. #define JS_HAS_SCRIPT_OBJECT    0       /* has (new Script("x++")).exec() */
  175. #define JS_HAS_XDR              0       /* has XDR API and internal support */
  176. #define JS_HAS_XDR_FREEZE_THAW  0       /* has XDR freeze/thaw script methods */
  177. #define JS_HAS_EXCEPTIONS       0       /* has exception handling */
  178. #define JS_HAS_UNDEFINED        0       /* has global "undefined" property */
  179. #define JS_HAS_TOSOURCE         0       /* has Object/Array toSource method */
  180. #define JS_HAS_IN_OPERATOR      0       /* has in operator ('p' in {p:1}) */
  181. #define JS_HAS_INSTANCEOF       0       /* has {p:1} instanceof Object */
  182. #define JS_HAS_ARGS_OBJECT      0       /* has minimal ECMA arguments object */
  183. #define JS_HAS_DEBUGGER_KEYWORD 0       /* has hook for debugger keyword */
  184. #define JS_HAS_ERROR_EXCEPTIONS 0       /* has error object hierarchy */
  185. #define JS_HAS_CATCH_GUARD      0       /* has exception handling catch guard */
  186. #define JS_HAS_NEW_OBJ_METHODS  0       /* has Object.prototype query methods */
  187. #define JS_HAS_SPARSE_ARRAYS    0       /* array methods preserve empty elems */
  188. #define JS_HAS_DFLT_MSG_STRINGS 1       /* provides English error messages */
  189. #define JS_HAS_NUMBER_FORMATS   0       /* numbers have formatting methods */
  190. #define JS_HAS_GETTER_SETTER    0       /* has JS2 getter/setter functions */
  191. #define JS_HAS_UNEVAL           0       /* has uneval() top-level function */
  192. #define JS_HAS_CONST            0       /* has JS2 const as alternative var */
  193. #define JS_HAS_FUN_EXPR_STMT    0       /* has function expression statement */
  194. #define JS_HAS_LVALUE_RETURN    0       /* has o.item(i) = j; for native item */
  195. #define JS_HAS_NO_SUCH_METHOD   0       /* has o.__noSuchMethod__ handler */
  196. #define JS_HAS_XML_SUPPORT      0       /* has ECMAScript for XML support */
  197. #define JS_HAS_ARRAY_EXTRAS     0       /* has indexOf and Lispy extras */
  198.  
  199. #elif JS_VERSION == 110
  200.  
  201. #define JS_BUG_NULL_INDEX_PROPS 1       /* o[0] defaults to null, not void */
  202. #define JS_BUG_EMPTY_INDEX_ZERO 1       /* o[""] is equivalent to o[0] */
  203. #define JS_BUG_EAGER_TOSTRING   1       /* o.toString() trumps o.valueOf() */
  204. #define JS_BUG_VOID_TOSTRING    0       /* void 0 + 0 == "undefined0" */
  205. #define JS_BUG_EVAL_THIS_FUN    1       /* eval('this') in function f is f */
  206. #define JS_BUG_EVAL_THIS_SCOPE  1       /* Math.eval('sin(x)') vs. local x */
  207. #define JS_BUG_FALLIBLE_EQOPS   1       /* fallible/intransitive equality ops */
  208. #define JS_BUG_FALLIBLE_TONUM   1       /* fallible ValueToNumber primitive */
  209. #define JS_BUG_WITH_CLOSURE     0       /* with(o)function f(){} sets o.f */
  210.  
  211. #define JS_HAS_PROP_DELETE      0       /* delete o.p removes p from o */
  212. #define JS_HAS_CALL_OBJECT      0       /* fun.caller is stack frame obj */
  213. #define JS_HAS_LABEL_STATEMENT  0       /* has break/continue to label: */
  214. #define JS_HAS_DO_WHILE_LOOP    0       /* has do {...} while (b) */
  215. #define JS_HAS_SWITCH_STATEMENT 0       /* has switch (v) {case c: ...} */
  216. #define JS_HAS_SOME_PERL_FUN    1       /* has array.join/reverse/sort */
  217. #define JS_HAS_MORE_PERL_FUN    0       /* has array.push, str.substr, etc */
  218. #define JS_HAS_STR_HTML_HELPERS 1       /* has str.anchor, str.bold, etc. */
  219. #define JS_HAS_PERL_SUBSTR      0       /* has str.substr */
  220. #define JS_HAS_VALUEOF_HINT     0       /* valueOf(hint) where hint is typeof */
  221. #define JS_HAS_LEXICAL_CLOSURE  0       /* nested functions, lexically closed */
  222. #define JS_HAS_APPLY_FUNCTION   0       /* has apply(fun, arg1, ... argN) */
  223. #define JS_HAS_CALL_FUNCTION    0       /* has fun.call(obj, arg1, ... argN) */
  224. #define JS_HAS_OBJ_PROTO_PROP   0       /* has o.__proto__ etc. */
  225. #define JS_HAS_REGEXPS          0       /* has perl r.e.s via RegExp, /pat/ */
  226. #define JS_HAS_SEQUENCE_OPS     0       /* has array.slice, string.concat */
  227. #define JS_HAS_INITIALIZERS     0       /* has var o = {'foo': 42, 'bar':3} */
  228. #define JS_HAS_OBJ_WATCHPOINT   0       /* has o.watch and o.unwatch */
  229. #define JS_HAS_EXPORT_IMPORT    0       /* has export fun; import obj.fun */
  230. #define JS_HAS_EVAL_THIS_SCOPE  0       /* Math.eval is same as with (Math) */
  231. #define JS_HAS_TRIPLE_EQOPS     0       /* has === and !== identity eqops */
  232. #define JS_HAS_SHARP_VARS       0       /* has #n=, #n# for object literals */
  233. #define JS_HAS_REPLACE_LAMBDA   0       /* has string.replace(re, lambda) */
  234. #define JS_HAS_SCRIPT_OBJECT    0       /* has (new Script("x++")).exec() */
  235. #define JS_HAS_XDR              0       /* has XDR API and internal support */
  236. #define JS_HAS_XDR_FREEZE_THAW  0       /* has XDR freeze/thaw script methods */
  237. #define JS_HAS_EXCEPTIONS       0       /* has exception handling */
  238. #define JS_HAS_UNDEFINED        0       /* has global "undefined" property */
  239. #define JS_HAS_TOSOURCE         0       /* has Object/Array toSource method */
  240. #define JS_HAS_IN_OPERATOR      0       /* has in operator ('p' in {p:1}) */
  241. #define JS_HAS_INSTANCEOF       0       /* has {p:1} instanceof Object */
  242. #define JS_HAS_ARGS_OBJECT      0       /* has minimal ECMA arguments object */
  243. #define JS_HAS_DEBUGGER_KEYWORD 0       /* has hook for debugger keyword */
  244. #define JS_HAS_ERROR_EXCEPTIONS 0       /* has error object hierarchy */
  245. #define JS_HAS_CATCH_GUARD      0       /* has exception handling catch guard */
  246. #define JS_HAS_NEW_OBJ_METHODS  0       /* has Object.prototype query methods */
  247. #define JS_HAS_SPARSE_ARRAYS    0       /* array methods preserve empty elems */
  248. #define JS_HAS_DFLT_MSG_STRINGS 1       /* provides English error messages */
  249. #define JS_HAS_NUMBER_FORMATS   0       /* numbers have formatting methods */
  250. #define JS_HAS_GETTER_SETTER    0       /* has JS2 getter/setter functions */
  251. #define JS_HAS_UNEVAL           0       /* has uneval() top-level function */
  252. #define JS_HAS_CONST            0       /* has JS2 const as alternative var */
  253. #define JS_HAS_FUN_EXPR_STMT    0       /* has function expression statement */
  254. #define JS_HAS_LVALUE_RETURN    0       /* has o.item(i) = j; for native item */
  255. #define JS_HAS_NO_SUCH_METHOD   0       /* has o.__noSuchMethod__ handler */
  256. #define JS_HAS_XML_SUPPORT      0       /* has ECMAScript for XML support */
  257. #define JS_HAS_ARRAY_EXTRAS     0       /* has indexOf and Lispy extras */
  258.  
  259. #elif JS_VERSION == 120
  260.  
  261. #define JS_BUG_NULL_INDEX_PROPS 0       /* o[0] defaults to null, not void */
  262. #define JS_BUG_EMPTY_INDEX_ZERO 0       /* o[""] is equivalent to o[0] */
  263. #define JS_BUG_EAGER_TOSTRING   0       /* o.toString() trumps o.valueOf() */
  264. #define JS_BUG_VOID_TOSTRING    1       /* void 0 + 0 == "undefined0" */
  265. #define JS_BUG_EVAL_THIS_FUN    0       /* eval('this') in function f is f */
  266. #define JS_BUG_EVAL_THIS_SCOPE  0       /* Math.eval('sin(x)') vs. local x */
  267. #define JS_BUG_FALLIBLE_EQOPS   0       /* fallible/intransitive equality ops */
  268. #define JS_BUG_FALLIBLE_TONUM   0       /* fallible ValueToNumber primitive */
  269. #define JS_BUG_WITH_CLOSURE     1       /* with(o)function f(){} sets o.f */
  270.  
  271. #define JS_HAS_PROP_DELETE      1       /* delete o.p removes p from o */
  272. #define JS_HAS_CALL_OBJECT      1       /* fun.caller is stack frame obj */
  273. #define JS_HAS_LABEL_STATEMENT  1       /* has break/continue to label: */
  274. #define JS_HAS_DO_WHILE_LOOP    1       /* has do {...} while (b) */
  275. #define JS_HAS_SWITCH_STATEMENT 1       /* has switch (v) {case c: ...} */
  276. #define JS_HAS_SOME_PERL_FUN    1       /* has array.join/reverse/sort */
  277. #define JS_HAS_MORE_PERL_FUN    1       /* has array.push, str.substr, etc */
  278. #define JS_HAS_STR_HTML_HELPERS 1       /* has str.anchor, str.bold, etc. */
  279. #define JS_HAS_PERL_SUBSTR      1       /* has str.substr */
  280. #define JS_HAS_VALUEOF_HINT     1       /* valueOf(hint) where hint is typeof */
  281. #define JS_HAS_LEXICAL_CLOSURE  1       /* nested functions, lexically closed */
  282. #define JS_HAS_APPLY_FUNCTION   1       /* has apply(fun, arg1, ... argN) */
  283. #define JS_HAS_CALL_FUNCTION    0       /* has fun.call(obj, arg1, ... argN) */
  284. #define JS_HAS_OBJ_PROTO_PROP   1       /* has o.__proto__ etc. */
  285. #define JS_HAS_REGEXPS          1       /* has perl r.e.s via RegExp, /pat/ */
  286. #define JS_HAS_SEQUENCE_OPS     1       /* has array.slice, string.concat */
  287. #define JS_HAS_INITIALIZERS     1       /* has var o = {'foo': 42, 'bar':3} */
  288. #define JS_HAS_OBJ_WATCHPOINT   1       /* has o.watch and o.unwatch */
  289. #define JS_HAS_EXPORT_IMPORT    1       /* has export fun; import obj.fun */
  290. #define JS_HAS_EVAL_THIS_SCOPE  1       /* Math.eval is same as with (Math) */
  291. #define JS_HAS_TRIPLE_EQOPS     0       /* has === and !== identity eqops */
  292. #define JS_HAS_SHARP_VARS       0       /* has #n=, #n# for object literals */
  293. #define JS_HAS_REPLACE_LAMBDA   0       /* has string.replace(re, lambda) */
  294. #define JS_HAS_SCRIPT_OBJECT    0       /* has (new Script("x++")).exec() */
  295. #define JS_HAS_XDR              0       /* has XDR API and internal support */
  296. #define JS_HAS_XDR_FREEZE_THAW  0       /* has XDR freeze/thaw script methods */
  297. #define JS_HAS_EXCEPTIONS       0       /* has exception handling */
  298. #define JS_HAS_UNDEFINED        0       /* has global "undefined" property */
  299. #define JS_HAS_TOSOURCE         0       /* has Object/Array toSource method */
  300. #define JS_HAS_IN_OPERATOR      0       /* has in operator ('p' in {p:1}) */
  301. #define JS_HAS_INSTANCEOF       0       /* has {p:1} instanceof Object */
  302. #define JS_HAS_ARGS_OBJECT      0       /* has minimal ECMA arguments object */
  303. #define JS_HAS_DEBUGGER_KEYWORD 0       /* has hook for debugger keyword */
  304. #define JS_HAS_ERROR_EXCEPTIONS 0       /* has error object hierarchy */
  305. #define JS_HAS_CATCH_GUARD      0       /* has exception handling catch guard */
  306. #define JS_HAS_NEW_OBJ_METHODS  0       /* has Object.prototype query methods */
  307. #define JS_HAS_SPARSE_ARRAYS    0       /* array methods preserve empty elems */
  308. #define JS_HAS_DFLT_MSG_STRINGS 1       /* provides English error messages */
  309. #define JS_HAS_NUMBER_FORMATS   0       /* numbers have formatting methods */
  310. #define JS_HAS_GETTER_SETTER    0       /* has JS2 getter/setter functions */
  311. #define JS_HAS_UNEVAL           0       /* has uneval() top-level function */
  312. #define JS_HAS_CONST            0       /* has JS2 const as alternative var */
  313. #define JS_HAS_FUN_EXPR_STMT    0       /* has function expression statement */
  314. #define JS_HAS_LVALUE_RETURN    0       /* has o.item(i) = j; for native item */
  315. #define JS_HAS_NO_SUCH_METHOD   0       /* has o.__noSuchMethod__ handler */
  316. #define JS_HAS_XML_SUPPORT      0       /* has ECMAScript for XML support */
  317. #define JS_HAS_ARRAY_EXTRAS     0       /* has indexOf and Lispy extras */
  318.  
  319. #elif JS_VERSION == 130
  320.  
  321. #define JS_BUG_NULL_INDEX_PROPS 0       /* o[0] defaults to null, not void */
  322. #define JS_BUG_EMPTY_INDEX_ZERO 0       /* o[""] is equivalent to o[0] */
  323. #define JS_BUG_EAGER_TOSTRING   0       /* o.toString() trumps o.valueOf() */
  324. #define JS_BUG_VOID_TOSTRING    0       /* void 0 + 0 == "undefined0" */
  325. #define JS_BUG_EVAL_THIS_FUN    0       /* eval('this') in function f is f */
  326. #define JS_BUG_EVAL_THIS_SCOPE  0       /* Math.eval('sin(x)') vs. local x */
  327. #define JS_BUG_FALLIBLE_EQOPS   0       /* fallible/intransitive equality ops */
  328. #define JS_BUG_FALLIBLE_TONUM   0       /* fallible ValueToNumber primitive */
  329. #define JS_BUG_WITH_CLOSURE     1       /* with(o)function f(){} sets o.f */
  330.  
  331. #define JS_HAS_PROP_DELETE      1       /* delete o.p removes p from o */
  332. #define JS_HAS_CALL_OBJECT      1       /* fun.caller is stack frame obj */
  333. #define JS_HAS_LABEL_STATEMENT  1       /* has break/continue to label: */
  334. #define JS_HAS_DO_WHILE_LOOP    1       /* has do {...} while (b) */
  335. #define JS_HAS_SWITCH_STATEMENT 1       /* has switch (v) {case c: ...} */
  336. #define JS_HAS_SOME_PERL_FUN    1       /* has array.join/reverse/sort */
  337. #define JS_HAS_MORE_PERL_FUN    1       /* has array.push, str.substr, etc */
  338. #define JS_HAS_STR_HTML_HELPERS 1       /* has str.anchor, str.bold, etc. */
  339. #define JS_HAS_PERL_SUBSTR      1       /* has str.substr */
  340. #define JS_HAS_VALUEOF_HINT     1       /* valueOf(hint) where hint is typeof */
  341. #define JS_HAS_LEXICAL_CLOSURE  1       /* nested functions, lexically closed */
  342. #define JS_HAS_APPLY_FUNCTION   1       /* has apply(fun, arg1, ... argN) */
  343. #define JS_HAS_CALL_FUNCTION    1       /* has fun.call(obj, arg1, ... argN) */
  344. #define JS_HAS_OBJ_PROTO_PROP   1       /* has o.__proto__ etc. */
  345. #define JS_HAS_REGEXPS          1       /* has perl r.e.s via RegExp, /pat/ */
  346. #define JS_HAS_SEQUENCE_OPS     1       /* has array.slice, string.concat */
  347. #define JS_HAS_INITIALIZERS     1       /* has var o = {'foo': 42, 'bar':3} */
  348. #define JS_HAS_OBJ_WATCHPOINT   1       /* has o.watch and o.unwatch */
  349. #define JS_HAS_EXPORT_IMPORT    1       /* has export fun; import obj.fun */
  350. #define JS_HAS_EVAL_THIS_SCOPE  1       /* Math.eval is same as with (Math) */
  351. #define JS_HAS_TRIPLE_EQOPS     1       /* has === and !== identity eqops */
  352. #define JS_HAS_SHARP_VARS       1       /* has #n=, #n# for object literals */
  353. #define JS_HAS_REPLACE_LAMBDA   1       /* has string.replace(re, lambda) */
  354. #define JS_HAS_SCRIPT_OBJECT    1       /* has (new Script("x++")).exec() */
  355. #define JS_HAS_XDR              1       /* has XDR API and internal support */
  356. #define JS_HAS_XDR_FREEZE_THAW  0       /* has XDR freeze/thaw script methods */
  357. #define JS_HAS_EXCEPTIONS       0       /* has exception handling */
  358. #define JS_HAS_UNDEFINED        1       /* has global "undefined" property */
  359. #define JS_HAS_TOSOURCE         1       /* has Object/Array toSource method */
  360. #define JS_HAS_IN_OPERATOR      0       /* has in operator ('p' in {p:1}) */
  361. #define JS_HAS_INSTANCEOF       0       /* has {p:1} instanceof Object */
  362. #define JS_HAS_ARGS_OBJECT      1       /* has minimal ECMA arguments object */
  363. #define JS_HAS_DEBUGGER_KEYWORD 1       /* has hook for debugger keyword */
  364. #define JS_HAS_ERROR_EXCEPTIONS 0       /* has error object hierarchy */
  365. #define JS_HAS_CATCH_GUARD      0       /* has exception handling catch guard */
  366. #define JS_HAS_NEW_OBJ_METHODS  0       /* has Object.prototype query methods */
  367. #define JS_HAS_SPARSE_ARRAYS    0       /* array methods preserve empty elems */
  368. #define JS_HAS_DFLT_MSG_STRINGS 1       /* provides English error messages */
  369. #define JS_HAS_NUMBER_FORMATS   0       /* numbers have formatting methods */
  370. #define JS_HAS_GETTER_SETTER    0       /* has JS2 getter/setter functions */
  371. #define JS_HAS_UNEVAL           0       /* has uneval() top-level function */
  372. #define JS_HAS_CONST            0       /* has JS2 const as alternative var */
  373. #define JS_HAS_FUN_EXPR_STMT    0       /* has function expression statement */
  374. #define JS_HAS_LVALUE_RETURN    0       /* has o.item(i) = j; for native item */
  375. #define JS_HAS_NO_SUCH_METHOD   0       /* has o.__noSuchMethod__ handler */
  376. #define JS_HAS_XML_SUPPORT      0       /* has ECMAScript for XML support */
  377. #define JS_HAS_ARRAY_EXTRAS     0       /* has indexOf and Lispy extras */
  378.  
  379. #elif JS_VERSION == 140
  380.  
  381. #define JS_BUG_NULL_INDEX_PROPS 0       /* o[0] defaults to null, not void */
  382. #define JS_BUG_EMPTY_INDEX_ZERO 0       /* o[""] is equivalent to o[0] */
  383. #define JS_BUG_EAGER_TOSTRING   0       /* o.toString() trumps o.valueOf() */
  384. #define JS_BUG_VOID_TOSTRING    0       /* void 0 + 0 == "undefined0" */
  385. #define JS_BUG_EVAL_THIS_FUN    0       /* eval('this') in function f is f */
  386. #define JS_BUG_EVAL_THIS_SCOPE  0       /* Math.eval('sin(x)') vs. local x */
  387. #define JS_BUG_FALLIBLE_EQOPS   0       /* fallible/intransitive equality ops */
  388. #define JS_BUG_FALLIBLE_TONUM   0       /* fallible ValueToNumber primitive */
  389. #define JS_BUG_WITH_CLOSURE     1       /* with(o)function f(){} sets o.f */
  390.  
  391. #define JS_HAS_PROP_DELETE      1       /* delete o.p removes p from o */
  392. #define JS_HAS_CALL_OBJECT      1       /* fun.caller is stack frame obj */
  393. #define JS_HAS_LABEL_STATEMENT  1       /* has break/continue to label: */
  394. #define JS_HAS_DO_WHILE_LOOP    1       /* has do {...} while (b) */
  395. #define JS_HAS_SWITCH_STATEMENT 1       /* has switch (v) {case c: ...} */
  396. #define JS_HAS_SOME_PERL_FUN    1       /* has array.join/reverse/sort */
  397. #define JS_HAS_MORE_PERL_FUN    1       /* has array.push, str.substr, etc */
  398. #define JS_HAS_STR_HTML_HELPERS 1       /* has str.anchor, str.bold, etc. */
  399. #define JS_HAS_PERL_SUBSTR      1       /* has str.substr */
  400. #define JS_HAS_VALUEOF_HINT     1       /* valueOf(hint) where hint is typeof */
  401. #define JS_HAS_LEXICAL_CLOSURE  1       /* nested functions, lexically closed */
  402. #define JS_HAS_APPLY_FUNCTION   1       /* has apply(fun, arg1, ... argN) */
  403. #define JS_HAS_CALL_FUNCTION    1       /* has fun.call(obj, arg1, ... argN) */
  404. #define JS_HAS_OBJ_PROTO_PROP   1       /* has o.__proto__ etc. */
  405. #define JS_HAS_REGEXPS          1       /* has perl r.e.s via RegExp, /pat/ */
  406. #define JS_HAS_SEQUENCE_OPS     1       /* has array.slice, string.concat */
  407. #define JS_HAS_INITIALIZERS     1       /* has var o = {'foo': 42, 'bar':3} */
  408. #define JS_HAS_OBJ_WATCHPOINT   1       /* has o.watch and o.unwatch */
  409. #define JS_HAS_EXPORT_IMPORT    1       /* has export fun; import obj.fun */
  410. #define JS_HAS_EVAL_THIS_SCOPE  1       /* Math.eval is same as with (Math) */
  411. #define JS_HAS_TRIPLE_EQOPS     1       /* has === and !== identity eqops */
  412. #define JS_HAS_SHARP_VARS       1       /* has #n=, #n# for object literals */
  413. #define JS_HAS_REPLACE_LAMBDA   1       /* has string.replace(re, lambda) */
  414. #define JS_HAS_SCRIPT_OBJECT    1       /* has (new Script("x++")).exec() */
  415. #define JS_HAS_XDR              1       /* has XDR API and internal support */
  416. #define JS_HAS_XDR_FREEZE_THAW  0       /* has XDR freeze/thaw script methods */
  417. #define JS_HAS_EXCEPTIONS       1       /* has exception handling */
  418. #define JS_HAS_UNDEFINED        1       /* has global "undefined" property */
  419. #define JS_HAS_TOSOURCE         1       /* has Object/Array toSource method */
  420. #define JS_HAS_IN_OPERATOR      1       /* has in operator ('p' in {p:1}) */
  421. #define JS_HAS_INSTANCEOF       1       /* has {p:1} instanceof Object */
  422. #define JS_HAS_ARGS_OBJECT      1       /* has minimal ECMA arguments object */
  423. #define JS_HAS_DEBUGGER_KEYWORD 1       /* has hook for debugger keyword */
  424. #define JS_HAS_ERROR_EXCEPTIONS 0       /* rt errors reflected as exceptions */
  425. #define JS_HAS_CATCH_GUARD      0       /* has exception handling catch guard */
  426. #define JS_HAS_NEW_OBJ_METHODS  0       /* has Object.prototype query methods */
  427. #define JS_HAS_SPARSE_ARRAYS    0       /* array methods preserve empty elems */
  428. #define JS_HAS_DFLT_MSG_STRINGS 1       /* provides English error messages */
  429. #define JS_HAS_NUMBER_FORMATS   0       /* numbers have formatting methods */
  430. #define JS_HAS_GETTER_SETTER    0       /* has JS2 getter/setter functions */
  431. #define JS_HAS_UNEVAL           0       /* has uneval() top-level function */
  432. #define JS_HAS_CONST            0       /* has JS2 const as alternative var */
  433. #define JS_HAS_FUN_EXPR_STMT    0       /* has function expression statement */
  434. #define JS_HAS_LVALUE_RETURN    0       /* has o.item(i) = j; for native item */
  435. #define JS_HAS_NO_SUCH_METHOD   0       /* has o.__noSuchMethod__ handler */
  436. #define JS_HAS_XML_SUPPORT      0       /* has ECMAScript for XML support */
  437. #define JS_HAS_ARRAY_EXTRAS     0       /* has indexOf and Lispy extras */
  438.  
  439. #elif JS_VERSION == 150
  440.  
  441. #define JS_BUG_NULL_INDEX_PROPS 0       /* o[0] defaults to null, not void */
  442. #define JS_BUG_EMPTY_INDEX_ZERO 0       /* o[""] is equivalent to o[0] */
  443. #define JS_BUG_EAGER_TOSTRING   0       /* o.toString() trumps o.valueOf() */
  444. #define JS_BUG_VOID_TOSTRING    0       /* void 0 + 0 == "undefined0" */
  445. #define JS_BUG_EVAL_THIS_FUN    0       /* eval('this') in function f is f */
  446. #define JS_BUG_EVAL_THIS_SCOPE  0       /* Math.eval('sin(x)') vs. local x */
  447. #define JS_BUG_FALLIBLE_EQOPS   0       /* fallible/intransitive equality ops */
  448. #define JS_BUG_FALLIBLE_TONUM   0       /* fallible ValueToNumber primitive */
  449. #define JS_BUG_WITH_CLOSURE     0       /* with(o)function f(){} sets o.f */
  450.  
  451. #define JS_HAS_PROP_DELETE      1       /* delete o.p removes p from o */
  452. #define JS_HAS_CALL_OBJECT      1       /* fun.caller is stack frame obj */
  453. #define JS_HAS_LABEL_STATEMENT  1       /* has break/continue to label: */
  454. #define JS_HAS_DO_WHILE_LOOP    1       /* has do {...} while (b) */
  455. #define JS_HAS_SWITCH_STATEMENT 1       /* has switch (v) {case c: ...} */
  456. #define JS_HAS_SOME_PERL_FUN    1       /* has array.join/reverse/sort */
  457. #define JS_HAS_MORE_PERL_FUN    1       /* has array.push, str.substr, etc */
  458. #define JS_HAS_STR_HTML_HELPERS 1       /* has str.anchor, str.bold, etc. */
  459. #define JS_HAS_PERL_SUBSTR      1       /* has str.substr */
  460. #define JS_HAS_VALUEOF_HINT     1       /* valueOf(hint) where hint is typeof */
  461. #define JS_HAS_LEXICAL_CLOSURE  1       /* nested functions, lexically closed */
  462. #define JS_HAS_APPLY_FUNCTION   1       /* has apply(fun, arg1, ... argN) */
  463. #define JS_HAS_CALL_FUNCTION    1       /* has fun.call(obj, arg1, ... argN) */
  464. #define JS_HAS_OBJ_PROTO_PROP   1       /* has o.__proto__ etc. */
  465. #define JS_HAS_REGEXPS          1       /* has perl r.e.s via RegExp, /pat/ */
  466. #define JS_HAS_SEQUENCE_OPS     1       /* has array.slice, string.concat */
  467. #define JS_HAS_INITIALIZERS     1       /* has var o = {'foo': 42, 'bar':3} */
  468. #define JS_HAS_OBJ_WATCHPOINT   1       /* has o.watch and o.unwatch */
  469. #define JS_HAS_EXPORT_IMPORT    1       /* has export fun; import obj.fun */
  470. #define JS_HAS_EVAL_THIS_SCOPE  1       /* Math.eval is same as with (Math) */
  471. #define JS_HAS_TRIPLE_EQOPS     1       /* has === and !== identity eqops */
  472. #define JS_HAS_SHARP_VARS       1       /* has #n=, #n# for object literals */
  473. #define JS_HAS_REPLACE_LAMBDA   1       /* has string.replace(re, lambda) */
  474. #define JS_HAS_SCRIPT_OBJECT    1       /* has (new Script("x++")).exec() */
  475. #define JS_HAS_XDR              1       /* has XDR API and internal support */
  476. #define JS_HAS_XDR_FREEZE_THAW  0       /* has XDR freeze/thaw script methods */
  477. #define JS_HAS_EXCEPTIONS       1       /* has exception handling */
  478. #define JS_HAS_UNDEFINED        1       /* has global "undefined" property */
  479. #define JS_HAS_TOSOURCE         1       /* has Object/Array toSource method */
  480. #define JS_HAS_IN_OPERATOR      1       /* has in operator ('p' in {p:1}) */
  481. #define JS_HAS_INSTANCEOF       1       /* has {p:1} instanceof Object */
  482. #define JS_HAS_ARGS_OBJECT      1       /* has minimal ECMA arguments object */
  483. #define JS_HAS_DEBUGGER_KEYWORD 1       /* has hook for debugger keyword */
  484. #define JS_HAS_ERROR_EXCEPTIONS 1       /* rt errors reflected as exceptions */
  485. #define JS_HAS_CATCH_GUARD      1       /* has exception handling catch guard */
  486. #define JS_HAS_NEW_OBJ_METHODS  1       /* has Object.prototype query methods */
  487. #define JS_HAS_SPARSE_ARRAYS    0       /* array methods preserve empty elems */
  488. #define JS_HAS_DFLT_MSG_STRINGS 1       /* provides English error messages */
  489. #define JS_HAS_NUMBER_FORMATS   1       /* numbers have formatting methods */
  490. #define JS_HAS_GETTER_SETTER    1       /* has JS2 getter/setter functions */
  491. #define JS_HAS_UNEVAL           1       /* has uneval() top-level function */
  492. #define JS_HAS_CONST            1       /* has JS2 const as alternative var */
  493. #define JS_HAS_FUN_EXPR_STMT    1       /* has function expression statement */
  494. #define JS_HAS_LVALUE_RETURN    1       /* has o.item(i) = j; for native item */
  495. #define JS_HAS_NO_SUCH_METHOD   1       /* has o.__noSuchMethod__ handler */
  496. #define JS_HAS_XML_SUPPORT      0       /* has ECMAScript for XML support */
  497. #define JS_HAS_ARRAY_EXTRAS     0       /* has indexOf and Lispy extras */
  498.  
  499. #elif JS_VERSION == 160
  500.  
  501. #define JS_BUG_NULL_INDEX_PROPS 0       /* o[0] defaults to null, not void */
  502. #define JS_BUG_EMPTY_INDEX_ZERO 0       /* o[""] is equivalent to o[0] */
  503. #define JS_BUG_EAGER_TOSTRING   0       /* o.toString() trumps o.valueOf() */
  504. #define JS_BUG_VOID_TOSTRING    0       /* void 0 + 0 == "undefined0" */
  505. #define JS_BUG_EVAL_THIS_FUN    0       /* eval('this') in function f is f */
  506. #define JS_BUG_EVAL_THIS_SCOPE  0       /* Math.eval('sin(x)') vs. local x */
  507. #define JS_BUG_FALLIBLE_EQOPS   0       /* fallible/intransitive equality ops */
  508. #define JS_BUG_FALLIBLE_TONUM   0       /* fallible ValueToNumber primitive */
  509. #define JS_BUG_WITH_CLOSURE     0       /* with(o)function f(){} sets o.f */
  510.  
  511. #define JS_HAS_PROP_DELETE      1       /* delete o.p removes p from o */
  512. #define JS_HAS_CALL_OBJECT      1       /* fun.caller is stack frame obj */
  513. #define JS_HAS_LABEL_STATEMENT  1       /* has break/continue to label: */
  514. #define JS_HAS_DO_WHILE_LOOP    1       /* has do {...} while (b) */
  515. #define JS_HAS_SWITCH_STATEMENT 1       /* has switch (v) {case c: ...} */
  516. #define JS_HAS_SOME_PERL_FUN    1       /* has array.join/reverse/sort */
  517. #define JS_HAS_MORE_PERL_FUN    1       /* has array.push, str.substr, etc */
  518. #define JS_HAS_STR_HTML_HELPERS 1       /* has str.anchor, str.bold, etc. */
  519. #define JS_HAS_PERL_SUBSTR      1       /* has str.substr */
  520. #define JS_HAS_VALUEOF_HINT     1       /* valueOf(hint) where hint is typeof */
  521. #define JS_HAS_LEXICAL_CLOSURE  1       /* nested functions, lexically closed */
  522. #define JS_HAS_APPLY_FUNCTION   1       /* has apply(fun, arg1, ... argN) */
  523. #define JS_HAS_CALL_FUNCTION    1       /* has fun.call(obj, arg1, ... argN) */
  524. #define JS_HAS_OBJ_PROTO_PROP   1       /* has o.__proto__ etc. */
  525. #define JS_HAS_REGEXPS          1       /* has perl r.e.s via RegExp, /pat/ */
  526. #define JS_HAS_SEQUENCE_OPS     1       /* has array.slice, string.concat */
  527. #define JS_HAS_INITIALIZERS     1       /* has var o = {'foo': 42, 'bar':3} */
  528. #define JS_HAS_OBJ_WATCHPOINT   1       /* has o.watch and o.unwatch */
  529. #define JS_HAS_EXPORT_IMPORT    1       /* has export fun; import obj.fun */
  530. #define JS_HAS_EVAL_THIS_SCOPE  1       /* Math.eval is same as with (Math) */
  531. #define JS_HAS_TRIPLE_EQOPS     1       /* has === and !== identity eqops */
  532. #define JS_HAS_SHARP_VARS       1       /* has #n=, #n# for object literals */
  533. #define JS_HAS_REPLACE_LAMBDA   1       /* has string.replace(re, lambda) */
  534. #define JS_HAS_SCRIPT_OBJECT    1       /* has (new Script("x++")).exec() */
  535. #define JS_HAS_XDR              1       /* has XDR API and internal support */
  536. #define JS_HAS_XDR_FREEZE_THAW  0       /* has XDR freeze/thaw script methods */
  537. #define JS_HAS_EXCEPTIONS       1       /* has exception handling */
  538. #define JS_HAS_UNDEFINED        1       /* has global "undefined" property */
  539. #define JS_HAS_TOSOURCE         1       /* has Object/Array toSource method */
  540. #define JS_HAS_IN_OPERATOR      1       /* has in operator ('p' in {p:1}) */
  541. #define JS_HAS_INSTANCEOF       1       /* has {p:1} instanceof Object */
  542. #define JS_HAS_ARGS_OBJECT      1       /* has minimal ECMA arguments object */
  543. #define JS_HAS_DEBUGGER_KEYWORD 1       /* has hook for debugger keyword */
  544. #define JS_HAS_ERROR_EXCEPTIONS 1       /* rt errors reflected as exceptions */
  545. #define JS_HAS_CATCH_GUARD      1       /* has exception handling catch guard */
  546. #define JS_HAS_NEW_OBJ_METHODS  1       /* has Object.prototype query methods */
  547. #define JS_HAS_SPARSE_ARRAYS    0       /* array methods preserve empty elems */
  548. #define JS_HAS_DFLT_MSG_STRINGS 1       /* provides English error messages */
  549. #define JS_HAS_NUMBER_FORMATS   1       /* numbers have formatting methods */
  550. #define JS_HAS_GETTER_SETTER    1       /* has JS2 getter/setter functions */
  551. #define JS_HAS_UNEVAL           1       /* has uneval() top-level function */
  552. #define JS_HAS_CONST            1       /* has JS2 const as alternative var */
  553. #define JS_HAS_FUN_EXPR_STMT    1       /* has function expression statement */
  554. #define JS_HAS_LVALUE_RETURN    1       /* has o.item(i) = j; for native item */
  555. #define JS_HAS_NO_SUCH_METHOD   1       /* has o.__noSuchMethod__ handler */
  556. #define JS_HAS_XML_SUPPORT      1       /* has ECMAScript for XML support */
  557. #define JS_HAS_ARRAY_EXTRAS     1       /* has indexOf and Lispy extras */
  558.  
  559. #else
  560.  
  561. #error "unknown JS_VERSION"
  562.  
  563. #endif
  564.